package com.example.bourse.service;

import com.example.bourse.pojo.entity.Role;
import com.example.bourse.pojo.entity.Menu;
import com.example.bourse.core.result.PageResult;
import java.util.List;

public interface RoleService {
    /**
     * 获取所有角色
     * @return 角色列表
     */
    List<Role> getAllRoles();

    /**
     * 根据ID获取角色
     * @param id 角色ID
     * @return 角色实体
     */
    Role getRoleById(long id);

    /**
     * 添加角色
     * @param role 角色信息
     */
    void addRole(Role role);

    /**
     * 更新角色
     * @param role 角色信息
     */
    void updateRole(Role role);

    /**
     * 删除角色
     * @param roleId 角色ID
     */
    void deleteRole(long roleId);

    /**
     * 获取角色总数
     * @return 角色数量
     */
    long countRoles();

    /**
     * 分页查询角色列表
     * @param page 页码
     * @param roleName 角色名称
     * @return 分页结果
     */
    PageResult<Role> listRoles(int page, String roleName);

    /**
     * 获取角色关联的菜单
     * @param roleId 角色ID
     * @return 菜单列表
     */
    List<Menu> getRoleMenus(long roleId);

    /**
     * 保存角色菜单
     * @param roleId 角色ID
     * @param menuIds 菜单ID列表
     */
    void saveRoleMenus(long roleId, List<Long> menuIds);
}
